1 //+------------------------------------------------------------------+
\r
2 //| ATR Channels.mq4 |
\r
3 //| Copyright © 2005, Luis Guilherme Damiani |
\r
4 //| http://www.damianifx.com.br |
\r
5 //+------------------------------------------------------------------+
\r
7 #property copyright "Copyright © 2005, Luis Guilherme Damiani"
\r
8 #property link "http://www.damianifx.com.br"
\r
9 #property indicator_chart_window
\r
10 #property indicator_buffers 7
\r
11 #property indicator_color1 Aqua //Moving Average
\r
12 #property indicator_color2 DeepSkyBlue // Lower band 1
\r
13 #property indicator_color3 DeepSkyBlue // Upper band 1
\r
14 #property indicator_color4 RoyalBlue // Lower band 2
\r
15 #property indicator_color5 RoyalBlue // Upper band 2
\r
16 #property indicator_color6 BlueViolet // Lower band 3
\r
17 #property indicator_color7 BlueViolet // Upper band 3
\r
18 //---- indicator buffers
\r
19 double MA_Buffer0[];
\r
20 double Ch1up_Buffer1[];
\r
21 double Ch1dn_Buffer2[];
\r
22 double Ch2up_Buffer3[];
\r
23 double Ch2dn_Buffer4[];
\r
24 double Ch3up_Buffer5[];
\r
25 double Ch3dn_Buffer6[];
\r
27 //---- input parameters
\r
28 extern int PeriodsATR=18;
\r
29 extern int MA_Periods=49;
\r
30 extern int MA_type=MODE_LWMA;
\r
31 extern double Mult_Factor1= 1.6;
\r
32 extern double Mult_Factor2= 3.2;
\r
33 extern double Mult_Factor3= 4.8;
\r
35 //+------------------------------------------------------------------+
\r
36 //| Custom indicator initialization function |
\r
37 //+------------------------------------------------------------------+
\r
44 SetIndexStyle(0,DRAW_LINE);
\r
45 SetIndexBuffer(0,MA_Buffer0);
\r
46 SetIndexDrawBegin(0,0);
\r
47 /*if (MA_type==MODE_LWMA)SetIndexLabel(0,"WMA"+MA_Periods) else
\r
49 if (MA_type==MODE_SMA) SetIndexLabel(0,"SMA"+MA_Periods) else
\r
51 if (MA_type==MODE_EMA) SetIndexLabel(0,"EMA"+MA_Periods) else
\r
52 SetIndexLabel(0,"SMMA"+MA_Periods);
\r
56 SetIndexStyle(1,DRAW_LINE);
\r
57 SetIndexBuffer(1,Ch1up_Buffer1);
\r
58 SetIndexDrawBegin(1,0);
\r
59 SetIndexLabel(1,"ATRu "+PeriodsATR+", "+Mult_Factor1);
\r
61 SetIndexStyle(2,DRAW_LINE);
\r
62 SetIndexBuffer(2,Ch1dn_Buffer2);
\r
63 SetIndexDrawBegin(2,0);
\r
64 SetIndexLabel(2,"ATRd "+PeriodsATR+", "+Mult_Factor1);
\r
66 SetIndexStyle(3,DRAW_LINE);
\r
67 SetIndexBuffer(3,Ch2up_Buffer3);
\r
68 SetIndexDrawBegin(3,0);
\r
69 SetIndexLabel(3,"ATRu "+PeriodsATR+", "+Mult_Factor2);
\r
71 SetIndexStyle(4,DRAW_LINE);
\r
72 SetIndexBuffer(4,Ch2dn_Buffer4);
\r
73 SetIndexDrawBegin(4,0);
\r
74 SetIndexLabel(4,"ATRd "+PeriodsATR+", "+Mult_Factor2);
\r
76 SetIndexStyle(5,DRAW_LINE);
\r
77 SetIndexBuffer(5,Ch3up_Buffer5);
\r
78 SetIndexDrawBegin(5,0);
\r
79 SetIndexLabel(5,"ATRu "+PeriodsATR+", "+Mult_Factor3);
\r
81 SetIndexStyle(6,DRAW_LINE);
\r
82 SetIndexBuffer(6,Ch3dn_Buffer6);
\r
83 SetIndexDrawBegin(6,0);
\r
84 SetIndexLabel(6,"ATRd "+PeriodsATR+", "+Mult_Factor3);
\r
88 //+------------------------------------------------------------------+
\r
89 //| Custor indicator deinitialization function |
\r
90 //+------------------------------------------------------------------+
\r
97 //+------------------------------------------------------------------+
\r
98 //| Custom indicator iteration function |
\r
99 //+------------------------------------------------------------------+
\r
102 int fixed_bars=IndicatorCounted();
\r
103 for(int i=0;i< Bars - fixed_bars;i++)
\r
105 double atr=iATR(NULL,0,PeriodsATR,i);
\r
106 double ma=iMA(NULL,0,MA_Periods,0,MA_type,PRICE_TYPICAL,i);
\r
108 Ch1up_Buffer1[i]=ma+atr*Mult_Factor1;
\r
109 Ch1dn_Buffer2[i]=ma-atr*Mult_Factor1;
\r
111 Ch2up_Buffer3[i]=ma+atr*Mult_Factor2;
\r
112 Ch2dn_Buffer4[i]=ma-atr*Mult_Factor2;
\r
114 Ch3up_Buffer5[i]=ma+atr*Mult_Factor3;
\r
115 Ch3dn_Buffer6[i]=ma-atr*Mult_Factor3;
\r